package jee.boot.common.utils;

import com.google.common.collect.Maps;

import java.util.Map;

/**
 * 项目剩下文
 */
public class JeeBootContext {
    /**
     * 引用的请求
     */
    public static String REFERER_URI="refererUri";
    /**
     * 语言
     */
    public static String LANGUAGE="language";
    /**
     * 权限用户
     * 在task中使用的权限账户id,一般都是在后台任务启动的时候,设置该环境变量,在任务结束后,会清掉这个变量,取值为task.createBy.id
     */
    public static String AUTHORIZED_USER="authorizedUser";

    /**
     * 项目中的线程上下文变量
     */
    private static ThreadLocal<Map<String, Object>> context = new ThreadLocal<Map<String, Object>>() {
        @Override
        protected Map<String, Object> initialValue() {
            return Maps.newHashMap();
        }
    };

    /**
     * 获取变量
     *
     * @param <T>
     * @return
     */
    public static <T> T get(String key) {
        return (T) context.get().get(key);
    }

    /**
     * 设置变量
     *
     * @param key
     * @param value
     */
    public static void set(String key, Object value) {
        context.get().put(key, value);
    }

    /**
     * 清空当前线程的上下文变量
     */
    public static void remove() {
        context.remove();
    }

    /**
     * 按key删除线程上下文变量
     */
    public static void remove(String key) {
        context.get().remove(key);
    }
}
